package com.lancoo.znbkxx.teacher.net;

import com.lancoo.znbkxx.teacher.base.BaseResponse;
import com.lancoo.znbkxx.teacher.model.ErrorRecoveryEntity;
import com.lancoo.znbkxx.teacher.model.ExportCommentPathEntity;
import com.lancoo.znbkxx.teacher.model.PaperEvaluationEntity;
import com.lancoo.znbkxx.teacher.model.PaperForEvalEntity;
import com.lancoo.znbkxx.teacher.model.PaperInforEntity;
import com.lancoo.znbkxx.teacher.model.QuesAnalysisEntity;
import com.lancoo.znbkxx.teacher.model.StuPaperInforEntity;
import com.lancoo.znbkxx.teacher.model.data.ClassStuInfo;
import com.lancoo.znbkxx.teacher.model.data.GrammarInfo;
import com.lancoo.znbkxx.teacher.model.data.GrammarTrailInfo;
import com.lancoo.znbkxx.teacher.model.data.LanguageCognitionInfo;
import com.lancoo.znbkxx.teacher.model.data.LanguageInfo;
import com.lancoo.znbkxx.teacher.model.data.LanguageTrailInfo;
import com.lancoo.znbkxx.teacher.model.data.PlatesDetailInfo;
import com.lancoo.znbkxx.teacher.model.data.PlatesInfo;
import com.lancoo.znbkxx.teacher.model.data.StuGradeForCenterInfo;
import com.lancoo.znbkxx.teacher.model.data.StuGradeInfo;
import com.lancoo.znbkxx.teacher.model.data.StuTopicInfo;
import com.lancoo.znbkxx.teacher.model.data.StuVocabInfo;
import com.lancoo.znbkxx.teacher.model.data.StudyAdviceInfo;
import com.lancoo.znbkxx.teacher.model.data.StudyTraitInfo;
import com.lancoo.znbkxx.teacher.model.data.TrailInfo;
import com.lancoo.znbkxx.teacher.model.data.TraitInfo;
import com.lancoo.znbkxx.teacher.model.data.UnstudyTopicInfo;
import com.lancoo.znbkxx.teacher.model.data.UnstudyVocabInfo;
import com.lancoo.znbkxx.teacher.model.data.VocabTrailInfo;
import com.lancoo.znbkxx.teacher.model.data.VocabularyInfo;
import com.lancoo.znbkxx.teacher.model.data.ZnbkResponse;
import com.lancoo.znbkxx.teacher.model.data.ZsdArea;
import com.lancoo.znbkxx.teacher.model.repository.SavePyScoreEntity;

import java.util.List;
import java.util.Map;

import io.reactivex.Single;
import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.QueryMap;

/**
 * Created by Dadong on 2020/4/2 21:46
 *
 * @Describe: 接口返回为Single<T>
 */

interface BkApiService {

    /*
     * 记录系统日志
     * */
    @POST("W_ZNBK_SaveOperation")
    Single<ResponseBody> saveOperation(@Body RequestBody postBody);

    /*
     * 获取试卷预览详情
     * */
    @GET("W_ZNBK_GetPaperInfo")
    Single<BaseResponse<PaperInforEntity>> getPreviewPaperInfor(@QueryMap Map<String, String> paramas);

    /*
     * 获取单题作答信息统计信息
     * */
    @GET("W_ZNBK_GetPaperQuesDetail")
    Single<BaseResponse<QuesAnalysisEntity>> getSingleQuesDetail(@QueryMap Map<String, String> paramas);

    /*
     * 获取待评阅试题
     * */
    @GET("W_ZNBK_GetPaperForEval")
    Single<BaseResponse<List<PaperForEvalEntity>>> getPaperForEval(@QueryMap Map<String, String> paramas);

    /*
     * 获取学生个人试卷作答详情
     * */
    @GET("W_ZNBK_GetStudentPaperInfoFormobile")
    Single<BaseResponse<StuPaperInforEntity>> getStudentPaperInfo(@QueryMap Map<String, String> paramas);

    /*
     * 获取试卷讲评信息
     * */
    @GET("W_ZNBK_GetPaperComment")
    Single<BaseResponse<PaperEvaluationEntity>> getPaperComment(@QueryMap Map<String, String> paramas);

    /*
     * 讲评试卷导出
     * */
    @POST("W_ZNBK_GetExportCommentPath")
    Single<BaseResponse<String>> exportCommentPath(@Body RequestBody postBody);

    /*
     *获取纠错分类
     * */
    @GET("W_ZNBK_GetQuesErrorConfig")
    Single<BaseResponse<List<ErrorRecoveryEntity>>> getErrorRecovery();

    /*
     * 提交纠错结果
     * */
    @POST("W_ZNBK_AddQuesErrorCorrection")
    Single<BaseResponse<String>> submitErrorRecovery(@Body RequestBody postBody);

    @POST("W_ZNBK_SaveStuReview")
    Single<BaseResponse> saveStuQuesTeacherScore(@Body RequestBody postBody);

    @GET("api/RZZD/GetStuExerciseTrait_App")
    Single<ZnbkResponse<TraitInfo>> getStuExerciseTrait(@QueryMap Map<String, Object> params);

    @GET("api/RZZD/GetStuGrammar_App")
    Single<ZnbkResponse<GrammarInfo>> getStuGrammar(@QueryMap Map<String, Object> params);

    @GET("api/RZZD/GetStuTopicInfoList_App")
    Single<ZnbkResponse<StuTopicInfo>> getStuTopicInfoList(@QueryMap Map<String, Object> params);

    @GET("api/RZZD/GetStuGrammarRZPlate_App")
    Single<ZnbkResponse<GrammarTrailInfo>> getStuGrammarRZPlate(@QueryMap Map<String, Object> params);

    @GET("api/RZZD/GetLanguageOutputs_App")
    Single<ZnbkResponse<LanguageCognitionInfo>> getLanguageOutputs(@QueryMap Map<String, Object> params);

    @GET("api/RZZD/GetLanguageHisChange_App")
    Single<ZnbkResponse<LanguageTrailInfo>> getLanguageHisChange(@QueryMap Map<String, Object> params);

    @GET("api/RZZD/GetStuCognitiveIndex_App")
    Single<ZnbkResponse<PlatesInfo>> getStuCognitiveIndex(@QueryMap Map<String, Object> params);

    @GET("api/RZZD/GetStuCognitivePlate_App")
    Single<ZnbkResponse<List<PlatesDetailInfo>>> getStuCognitivePlate(@QueryMap Map<String, Object> params);

    @GET("api/RZZD/GetStudyFeature_App")
    Single<ZnbkResponse<StudyTraitInfo>> getStudyFeature(@QueryMap Map<String, Object> params);

    @GET("api/RZZD/GetStuUnStudyTopicZsdInfoList_App")
    Single<ZnbkResponse<UnstudyTopicInfo>> getStuUnStudyTopicZsdInfoList(@QueryMap Map<String, Object> params);

    @GET("api/RZZD/GetStuUnStudyVocabInfoList_App")
    Single<ZnbkResponse<UnstudyVocabInfo>> getStuUnStudyVocabInfoList(@QueryMap Map<String, Object> params);

    @GET("api/RZZD/GetStuVocabInfoList_App")
    Single<ZnbkResponse<StuVocabInfo>> getStuVocabInfoList(@QueryMap Map<String, Object> params);

    @GET("api/RZZD/GetStuVocabRZPlate_App")
    Single<ZnbkResponse<VocabTrailInfo>> getStuVocabRZPlate(@QueryMap Map<String, Object> params);

    @GET("api/RZZD/GetStuVocabulary_App")
    Single<ZnbkResponse<VocabularyInfo>> getStuVocabulary(@QueryMap Map<String, Object> params);

    @GET("api/RZZD/GetStuPerformTrail_App")
    Single<ZnbkResponse<TrailInfo>> getStuPerformTrail(@QueryMap Map<String, Object> params);

    @GET("api/RZZD/GetStudyAdvice_App")
    Single<ZnbkResponse<StudyAdviceInfo>> getStudyAdvice(@QueryMap Map<String, Object> params);

    @GET("api/RZZD/GetZsdArea_App")
    Single<ZnbkResponse<List<ZsdArea>>> getZsdArea(@QueryMap Map<String, Object> params);

    @GET("api/RZZD/IsOpenStuRZZD_App")
    Single<ZnbkResponse<Boolean>> isOpenStuRZZD(@QueryMap Map<String, Object> paramas);

    @GET("api/RZZD/GetStuInfoByClass_App")
    Single<ZnbkResponse<ClassStuInfo>> getStuInfoByClass(@QueryMap Map<String, Object> paramas);

    @GET("api/RZZD/GetCognitiveGradeWithUserInfo_App")
    Single<ZnbkResponse<StuGradeInfo>> getCognitiveGradeWithUserInfo(@QueryMap Map<String, Object> paramas);

    @GET("api/RZZD/GetCognitiveGradeForCenter")
    Single<ZnbkResponse<StuGradeForCenterInfo>> GetCognitiveGradeForCenter(@QueryMap Map<String, Object> paramas);
}
